import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Esta clase representa al boton GiraBarco, 
 * el cual permite girar un barco previo a su colocacion en un tablero.
 * 
 * @author Miguel Martinez Aguilar
 * @version 04 de abril de 2013
 */
public class GiraBarco extends Boton
{
    // Declaracion de variables de instancia
    private CreaFlota creador;// es el objeto CreaFlota.
    private boolean vertical;// es un boleano que indica si los barcos estaran en horizontal o vertical.
    private GreenfootImage[] img2;// es un arreglo de imagenes que usara este boton.

    /**
     * Este es el metodo constructor del boton GiraBarco.
     * @param creador: El objeto CreaFlota al cual hara referencia este boton.
     */
    public GiraBarco(CreaFlota creador)
    {
        super("girabarcoh0.png","girabarcoh1.png","girabarcoh2.png");// normal, sobre, presionado.
        img2 = new GreenfootImage[6];
        img2[0] = new GreenfootImage("girabarcoh0.png");
        img2[1] = new GreenfootImage("girabarcoh1.png");
        img2[2] = new GreenfootImage("girabarcoh2.png");
        img2[3] = new GreenfootImage("girabarcov0.png");
        img2[4] = new GreenfootImage("girabarcov1.png");
        img2[5] = new GreenfootImage("girabarcov2.png");
        this.creador = creador;
        vertical = false;
    }
    
    /**
     * Este metodo cambia la orientacion (vertical u horizontal) de un barco.
     */
    public void ejecuta()
    {
        if(vertical){
            vertical = false;
            super.img[0] = img2[0];
            super.img[1] = img2[1];
            super.img[2] = img2[2];
        }
        else{
            vertical = true;
            super.img[0] = img2[3];
            super.img[1] = img2[4];
            super.img[2] = img2[5];
        }
        creador.vertical(vertical);
    }
    
    /**
     * Este metodo entrega el valor de la variable vertical.
     */
    public boolean esVertical()
    {
        return vertical;
    }
    
    /**
     * Este metodo modifica el valor vertical de este Actor (lo usan los oponentes).
     * @param val: boleano que indica si es vertical o no un barco.
     */
    public void esVertical(boolean val)
    {
        vertical = val;
        this.ejecuta();
        this.setImage(img[0]);
    }
}
